package com.ruicar.afs.cloud.parameter.commom.service;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruicar.afs.cloud.parameter.commom.condition.ChannelVehicleInfoCondition;
import com.ruicar.afs.cloud.parameter.commom.condition.VehicleCondition;
import com.ruicar.afs.cloud.parameter.commom.condition.VehicleListCondition;
import com.ruicar.afs.cloud.parameter.commom.condition.VehicleTreeCondition;
import com.ruicar.afs.cloud.parameter.commom.entity.TsysVehicleBrand;
import com.ruicar.afs.cloud.parameter.commom.entity.TsysVehicleDetail;
import com.ruicar.afs.cloud.parameter.commom.entity.TsysVehicleModel;
import com.ruicar.afs.cloud.parameter.commom.vo.RuleAtomVO;
import com.ruicar.afs.cloud.parameter.commom.vo.VehicleStyleVO;
import com.ruicar.afs.cloud.parameter.commom.vo.VehicleVO;

import java.util.List;

/**
 * @description: 款式明细表
 * @author: sijun.yu
 * @date: 2020/5/15 9:56
 */
public interface TsysVehicleDetailService extends IService<TsysVehicleDetail> {

    /**
     * 获取品牌信息
     *
     * @param condition
     * @return
     */
    public List<TsysVehicleBrand> getVehicleBrandList(VehicleCondition condition);

    /**
     * 获取车型信息
     *
     * @param condition
     * @return
     */
    public List<TsysVehicleModel> getVehicleModelList(VehicleCondition condition);

    /**
     * 获取款式信息
     *
     * @param condition
     * @return
     */
    public List<TsysVehicleDetail> getVehicleStyleList(VehicleCondition condition);

    /**
     * 获取品牌列表
     *
     * @param condition
     * @return
     */
    List<TsysVehicleBrand> getBrandInfo(VehicleTreeCondition condition);

    /**
     * 通过款式代码和品牌查询款式信息
     * @param code
     * @param modelCode
     * @return
     */
    public TsysVehicleDetail getVehicleDetail(String code,String modelCode);

    /**
     * 查询所有的车型数据
     * @param condition
     * @return
     */
    IPage<List<VehicleVO>> getVehicleList(Page page, VehicleListCondition condition);

    /**
     * 获取品牌Tree
     *
     * @param condition
     * @return
     */
    List<VehicleTreeCondition> getBrandTree(VehicleTreeCondition condition);
    /**
     * 获取车型Tree
     *
     * @param condition
     * @return
     */
    List<VehicleTreeCondition> getModelTree(VehicleTreeCondition condition);

    /**
     * 返回车型列表
     * @param condition
     * @return
     */
    public List getModelList(VehicleCondition condition);


    /**
     * 获取品牌信息【规则使用】
     *
     * @param condition
     * @return
     */
    public IPage<List<RuleAtomVO>> getBrandListByRule(Page page,VehicleCondition condition);

    /**
     * 获取车型信息【规则使用】
     *
     * @param condition
     * @return
     */
    public IPage<List<RuleAtomVO>> getModelListByRule(Page page,VehicleCondition condition);

    /**
     * 获取款式信息【规则使用】
     *
     * @param condition
     * @return
     */
    public IPage<List<RuleAtomVO>> getStyleListByRule(Page page,VehicleCondition condition);

    /**
     * 获取渠道主营品牌数信息
     *
     * @param condition
     * @return
     */
    ChannelVehicleInfoCondition getVehicleInfoTree(ChannelVehicleInfoCondition condition);
}
